package com.dhcc.bpm.modules.scf.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dhcc.bpm.modules.scf.entity.ScfFileAttachmentInfo;
import com.dhcc.bpm.modules.scf.vo.ScfFileAttachmentInfoVO.ScfFileAttachmentInfoVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import org.springframework.web.bind.annotation.PathVariable;

import java.util.List;


/**
 *  文件附件表-Mapper接口
 */
@Repository
public interface ScfFileAttachmentInfoMapper extends BaseMapper<ScfFileAttachmentInfo> {


    /**
     * 查询其他模块中记录对应的所有与其关联的文件附件信息
     *
     * @param newValue
     * @return
     */
    List<ScfFileAttachmentInfoVO> selectAllByAssociationId(String newValue);

    /**
     * 获取指定文件编号的文件路径
     * @param rowId
     * @return
     */
    String getFilePath(@Param("rowId") String rowId, @Param("fileCategory") String fileCategory) ;

    /**
     * 获取未关联附件记录的文件存储地址用于清理OBS中的垃圾文件
     * @return
     */
    List<String> getNullFilePath();

    /**
     * 根据其他模块中记录的主键编号查询文件附件表中对应的文件附件RowId
     *
     * @return
     */
    List<String> selectAssociationIdByRowId(String rowId);

    /**
     * 批量给文件附件记录关联上对应的编号（例：主体编号，车牌号，合同编号）
     *
     * @param rowIds
     * @param newValue
     */
    int batchUpdateField(List<String> rowIds, String newValue);

    /**
     * 批量删除其他模块中记录对应的附件文件记录
     *
     * @param newValue
     * @return
     */
    int batchDeleteFile(String newValue);

    /**
     * 将其他模块记录中对应的文件附件记录置空，取消关联。
     *
     * @param rowId
     * @return
     */
    int updataFiledNull(String rowId);



    /**
     * 根据文件id将文件临时路径更新为正式路径
     *
     * @param rowId
     * @return
     */
    int updateFilePath(String rowId, String objectKey);

    /**
     * 更新文件附件时，删除旧文件记录。
     *
     * @param rowId
     * @return
     */
    int deleteByOldFileInfo(String rowId);


    /**
     * 删除表中无效文件。
     * @return
     */
    int deleteUnusedFiles();

    int deleteByFileRowId(String rowId);
}
